package com.my.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.my.response.Result;
import com.my.system.entity.SysUser;
import com.my.vo.UserVO;

import java.util.List;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author my
 * @since 2021-04-21
 */
public interface ISysUserService extends IService<SysUser> {

    /**
     * @param user
     * @return java.util.List<com.my.system.entity.SysUser>
     * @Description 根据条件分页查询用户列表
     * @Author create by yang-m 2021/4/25 0025 11:11
     */
    List<SysUser> selectUserList(SysUser user);

    /**
     *
     * @param userVO
     * @return com.baomidou.mybatisplus.core.metadata.IPage<com.my.system.entity.SysUser>
     * @Description 根据条件查询用户列表
     * @Author create by yang-m 2021/4/26 0026 14:16
     */
    Result findUserFactor(UserVO userVO);

    /**
     *
     * @param userId
     * @return com.my.response.Result
     * @Description 根据用户编号获取详细信息,新增时执行
     * @Author create by yang-m 2021/4/26 0026 16:26
     */
    Result getInfo(Long userId);

    /**
     *
     * @param user
     * @return java.lang.Integer
     * @Description  新增用户
     * @Author create by yang-m 2021/4/27 0027 10:34
     */
    Integer insertUser(SysUser user);

    /**
     *
     * @param userName
     * @return java.lang.String
     * @Description 校验用户名称是否唯一
     * @Author create by yang-m 2021/4/27 0027 10:35
     */
    String checkUserNameUnique(String userName);

    /**
     *
     * @param user
     * @return java.lang.String
     * @Description 校验手机号码是否唯一
     * @Author create by yang-m 2021/4/27 0027 10:36
     */
    String checkPhoneUnique(SysUser user);

    /**
     *
     * @param user
     * @return java.lang.String
     * @Description 校验email是否唯一
     * @Author create by yang-m 2021/4/27 0027 10:36
     */
    String checkEmailUnique(SysUser user);

    /**
     *
     * @param user
     * @return void
     * @Description 校验用户是否允许操作
     * @Author create by yang-m 2021/4/27 0027 10:55
     */
    void checkUserAllowed(SysUser user);

    /**
     *
     * @param user
     * @return java.lang.Integer
     * @Description 修改用户
     * @Author create by yang-m 2021/4/27 0027 10:59
     */
    Integer updateUser(SysUser user);

    /**
     *
     * @param userIds
     * @return java.lang.Integer
     * @Description 批量删除用户信息
     * @Author create by yang-m 2021/4/27 0027 14:39
     */
    Integer deleteUserByIds(Long[] userIds);

    /**
     *
     * @param user
     * @return java.lang.Integer
     * @Description 状态用户修改
     * @Author create by yang-m 2021/4/27 0027 15:22
     */
    Integer updateUserStatus(SysUser user);
}
